Mini-curso de Python - SEC 2015

Autor: Herberth Amaral - herberthamaral@gmail.com

Montando o ambiente para este mini-curso

$ sudo apt-get install build-essential python-dev libblas-dev liblapack-dev gfortran python-pip git libzmq3 libzmq3-dev

$ sudo pip install pip --upgrade $ sudo pip install virtualenvwrapper

Adicione as seguintes linhas no seu ~/.bashrc (ou ~/.bash_profile)

export WORKON_HOME=$HOME/.virtualenvs

export PROJECT_HOME=$HOME/Devel source /usr/local/bin/virtualenvwrapper.sh

Clone o repositório deste curso:

$ git clone https://github.com/herberthamaral/curso-python-sec2015.git

$ mkvirtualenv -a $(pwd)/curso-python-sec2015 curso-python-sec2015 $ pip install -r requirements.txt $ pip install "ipython[all]"

Agora sente e espere porque vai demorar :)

Algumas características da linguagem

Para quem não conhece, o Python é uma linguagem:

  • Interpretada;
  • Tipagem forte e dinâmica;
  • Altíssimo nível;
  • De propósito geral;
  • Orientada a objetos, procedural e funcional;
  • Com gerenciamento de memória automático;

In [4]:
print "Olá Mundo!" #Este é o nosso hello world e este é um comentário :)


Olá Mundo!

Pequena demonstração de ferramentas úteis para engenheiros


In [26]:
%pylab inline


Populating the interactive namespace from numpy and matplotlib

Exemplo do Matplotlib, a principal ferramenta de plotagem de gráficos em Python


In [27]:
import numpy as np
x = np.linspace(0, 5)
plot(x, cos(x))


Out[27]:
[<matplotlib.lines.Line2D at 0x7f09c7c62510>]

Demonstração do scikit-learn, biblioteca de aprendizado de máquina


In [28]:
from sklearn.linear_model import Perceptron

perceptron = Perceptron()
perceptron.fit([[0,0], [0,1], [1,0], [1,1]], [0,1,1,1]) # porta OR
perceptron.predict([0,1])


Out[28]:
array([1])

Demonstração do NumPy, pedra fundamental para álgebra linear no Python


In [20]:
import numpy as np

matriz = np.matrix([[1,2,3,4], [5,6,7,8]])
matriz


Out[20]:
matrix([[1, 2, 3, 4],
        [5, 6, 7, 8]])

In [22]:
matriz.T #transposta


Out[22]:
matrix([[1, 5],
        [2, 6],
        [3, 7],
        [4, 8]])

In [25]:
matriz*matriz.T


Out[25]:
matrix([[ 30,  70],
        [ 70, 174]])

SymPy - matemática simbólica (sim, resolve integral)


In [33]:
import sympy as sp
sp.sqrt(8)


Out[33]:
2*sqrt(2)

In [51]:
x = sp.symbols('x')
sp.diff(sp.sin(x)*sp.exp(x),x)


Out[51]:
exp(x)*sin(x) + exp(x)*cos(x)

In [53]:
sp.integrate(sp.sin(x), x)


Out[53]:
-cos(x)

Banco de dados SQLite


In [3]:
import sqlite3
conn = sqlite3.connect('exemplo.db')
c = conn.cursor()

c.execute("CREATE TABLE IF NOT EXISTS pessoas (id integer primary key, nome text, telefone text, data_nascimento date)")
c.execute("""INSERT INTO pessoas (nome, telefone, data_nascimento) 
VALUES ('Herberth Amaral','32222222', '1988-11-05')""")
conn.commit()
c.execute('SELECT * from pessoas')
c.fetchone()


Out[3]:
(1, u'Herberth Amaral', u'32222222', u'1988-11-05')

Página web simples

Execute no terminal:

$ python web.py

Logo em seguida abra seu navegador em http://localhost:5000/

Agora sim, vamos à linguagem

  • Sintaxe básica;
  • Estruturas de dados:
    • variáveis;
    • tipos básicos de variáveis
      • booleanos;
      • string (str e unicode);
      • inteiros;
      • ponto flutuante;
      • ponto fixo;
      • long e complex;
      • arquivos;
      • data, hora, datahora, intervalos.
    • listas;
    • dicionários;
    • tuplas;
    • conjuntos;
    • fila (variante de lista);
    • pilha (variante de lista).
  • Estruturas de controle e repetição:
    • if..elif...else;
    • while;
    • for;
    • with;
  • Diretivas estruturais:
    • funções;
    • classes e objetos;
    • metaclasses (breve introdução);
    • iterators, generators e estruturas de dados infinitas;
  • Standard library
    • os
    • sys
    • hashlib
    • pdb
    • math
    • random
    • json
    • pickle